﻿using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Systemet.Domain
{
    class PersonalConnection
    {
        private LinqToSQLDataContext database;
        private bool successfull = false;
        private string connection = "";

        public bool validatePersonal(Personal personalObject, bool isNew)
        {
            connection = AccessController.Instance.Connection;
            database = new LinqToSQLDataContext(connection);

            var nyPersonal = from Personalregister in database.Personalregisters
                             where Personalregister.personnummer == personalObject.Personnummer
                             select Personalregister.personnummer;

            if (!nyPersonal.Contains(personalObject.Personnummer) && isNew == true)
            {
                successfull = Personalregistrering(personalObject);
            }
            else if (!nyPersonal.Contains(personalObject.Personnummer) && isNew == false)
            {
                successfull = UpdatePersonalregister(personalObject);
            }
            return successfull;
        }

        private bool Personalregistrering(Personal personalObject)
        {
            try
            {
                Personalregister nyPersonal = new Personalregister
                {
                    personnummer = generatePersonNR(),
                    Fnamn = personalObject.Förnamn,
                    Enamn = personalObject.Efternamn,
                    andratDatum = personalObject.Datum,
                    Månadslön = personalObject.Månadslön,
                    signatur = personalObject.Signatur,
                    Sysselsättningsgrad = personalObject.Sysselsättningsgrad,
                    Vakansavdrag = personalObject.Vakansavdrag,
                    rollID = personalObject.Roll

                    //
                    //HOW TO SOLVE AVDELNINGAR?? :-)
                    //

                };

                database.Personalregisters.InsertOnSubmit(nyPersonal);
                database.SubmitChanges();
                return true;
            }
            catch (Exception e)
            {
                MessageBox.Show(e.ToString());
                return false;
            }
        }

        private bool UpdatePersonalregister(Personal personalObject)
        {
            Personalregister uppdateraPersonal = database.Personalregisters.Single(p => p.personnummer == personalObject.Personnummer);
            try
            {
                uppdateraPersonal.Fnamn = personalObject.Förnamn;
                uppdateraPersonal.Enamn = personalObject.Efternamn;
                uppdateraPersonal.Månadslön = personalObject.Månadslön;
                uppdateraPersonal.Sysselsättningsgrad = personalObject.Sysselsättningsgrad;
                uppdateraPersonal.Vakansavdrag = personalObject.Vakansavdrag;
                uppdateraPersonal.andratDatum = personalObject.Datum;
                uppdateraPersonal.signatur = personalObject.Signatur;

                database.SubmitChanges();
                return true;
            }
            catch (Exception e)
            {
                MessageBox.Show(e.ToString());
                return false;
            }
        }

        private string generatePersonNR()
        {
            string prodID = "AABBCC";
            return prodID;
        }
    }
}
